package com.itheima.project.feign;

import com.itheima.project.basic.ResponseWrap;
import com.itheima.project.hystrix.BasicPayHystrix;
import com.itheima.project.hystrix.NativePayHystrix;
import com.itheima.project.vo.trade.RefundRecordVo;
import com.itheima.project.vo.trade.TradingVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @ClassName BasicPayFeign.java
 * @Description TODO
 */
@FeignClient(value = "module-trade-web",fallback = BasicPayHystrix.class )
public interface BasicPayFeign {

    /***
     * @description 统一收单线下交易查询
     * 该接口提供所有支付订单的查询，商户可以通过该接口主动查询订单状态，完成下一步的业务逻辑。
     * @param tradingVo 交易单
     * @return
     */
    @PostMapping("trade-basic/query")
    ResponseWrap<TradingVo> queryTrading(@RequestBody TradingVo tradingVo);

    /***
     * @description 统一收单交易退款接口
     * 当交易发生之后一段时间内，由于买家或者卖家的原因需要退款时，卖家可以通过退款接口将支付款退还给买家，
     * 将在收到退款请求并且验证成功之后，按照退款规则将支付款按原路退到买家帐号上。
     * @param tradingVo 交易单
     * @return
     */
    @PostMapping("trade-basic/refund")
    ResponseWrap<TradingVo> refundTrading(@RequestBody TradingVo tradingVo);

    /***
     * @description 统一收单交易退款查询接口
     * 当交易发生之后一段时间内，由于买家或者卖家的原因需要退款时，卖家可以通过退款接口将支付款退还给买家，
     * 将在收到退款请求并且验证成功之后，按照退款规则将支付款按原路退到买家帐号上。
     * @param refundRecordVo 退款交易单
     * @return
     */
    @PostMapping("trade-basic/query-refund")
    void queryRefundTrading(@RequestBody RefundRecordVo refundRecordVo);

}
